/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */

export {
	createRevertDriver,
	getStats,
	type MergeTreeStats,
	specToSegment,
	TestClient,
	type TestClientRevertibleDriver,
} from "./testClient.js";
export { checkTextMatchRelative, TestServer } from "./testServer.js";
export {
	countOperations,
	loadTextFromFile,
	loadTextFromFileWithMarkers,
	nodeOrdinalsHaveIntegrity,
	validatePartialLengths,
	useStrictPartialLengthChecks,
} from "./testUtils.js";
export {
	annotateRange,
	applyMessages,
	doOverRange,
	generateClientNames,
	generateOperationMessagesForClients,
	type IConfigRange,
	type IMergeTreeOperationRunnerConfig,
	insertAtRefPos,
	removeRange,
	type ReplayGroup,
	replayResultsPath,
	runMergeTreeOperationRunner,
	type TestOperation,
} from "./mergeTreeOperationRunner.js";
export {
	type LRUSegment,
	MergeTree,
	type IMergeTreeOptions,
	type IMergeTreeOptionsInternal,
} from "../mergeTree.js";
export { MergeTreeTextHelper } from "../MergeTreeTextHelper.js";
export { SnapshotLegacy } from "../snapshotlegacy.js";
export {
	addProperties,
	appendToMergeTreeDeltaRevertibles,
	BaseSegment,
	Client,
	CollaborationWindow,
	compareReferencePositions,
	type ConflictAction,
	createAnnotateRangeOp,
	createDetachedLocalReferencePosition,
	createGroupOp,
	createInsertOp,
	createInsertSegmentOp,
	createMap,
	createRemoveRangeOp,
	DetachedReferencePosition,
	discardMergeTreeDeltaRevertible,
	type IJSONMarkerSegment,
	type IJSONSegment,
	type IMarkerDef,
	type IMergeTreeAnnotateMsg,
	type IMergeTreeDelta,
	type IMergeTreeDeltaCallbackArgs,
	type IMergeTreeDeltaOp,
	type IMergeTreeDeltaOpArgs,
	type IMergeTreeGroupMsg,
	type IMergeTreeInsertMsg,
	type IMergeTreeMaintenanceCallbackArgs,
	type IMergeTreeOp,
	type IMergeTreeRemoveMsg,
	type IMergeTreeSegmentDelta,
	type IMergeTreeTextHelper,
	type IRBAugmentation,
	type IRBMatcher,
	type IRelativePosition,
	type ISegment,
	type ISegmentAction,
	type KeyComparer,
	LocalReferenceCollection,
	type LocalReferencePosition,
	type MapLike,
	Marker,
	matchProperties,
	maxReferencePosition,
	type MergeTreeDeltaOperationType,
	type MergeTreeDeltaOperationTypes,
	type MergeTreeDeltaRevertible,
	MergeTreeDeltaType,
	MergeTreeMaintenanceType,
	type MergeTreeRevertibleDriver,
	minReferencePosition,
	PropertiesManager,
	type Property,
	type PropertyAction,
	type PropertySet,
	type RBNode,
	type RBNodeActions,
	RedBlackTree,
	type ReferencePosition,
	ReferenceType,
	refGetTileLabels,
	refHasTileLabel,
	refHasTileLabels,
	refTypeIncludesFlag,
	reservedMarkerIdKey,
	reservedMarkerSimpleTypeKey,
	reservedTileLabelsKey,
	revertMergeTreeDeltaRevertibles,
	SortedSegmentSet,
	type SortedSegmentSetItem,
	SortedSet,
	TextSegment,
	type Trackable,
	TrackingGroup,
	TrackingGroupCollection,
	UnassignedSequenceNumber,
	UniversalSequenceNumber,
} from "../index.js";
